home *** CD-ROM | disk | FTP | other *** search
- #include <Devices.h>
- #include "Backlight.h"
-
- static Boolean gHasBacklight;
- static short gBacklightState;
- static short gOriginalBrightness;
- static short gDriverRef;
- static Boolean gInitialized = false;
-
- // This stuff is from the "Portable (BackLit)" document from the original Mac
- // Portable (!) There's a copy of the doc in the (Refs & Resources) folder.
-
- /* -------------------------------------------------------------------------------- */
- void InitializeBacklightControl(void)
- {
- if(!gInitialized)
- {
- gInitialized = true;
- gOriginalBrightness = 31;
- gHasBacklight = (OpenDriver("\p.Backlight", &gDriverRef) == noErr);
- }
- }
-
- /* -------------------------------------------------------------------------------- */
- OSErr GetBacklightBrightness(short *value)
- {
- CntrlParam pb;
- OSErr err;
-
- if(!gHasBacklight)
- {
- *value = 100;
- return paramErr;
- }
-
- pb.csCode = 0x5301;
- pb.ioCRefNum = gDriverRef;
- err = PBStatusSync((ParmBlkPtr)&pb);
- *value = pb.csParam[0];
- return err;
- }
-
- /* -------------------------------------------------------------------------------- */
- OSErr SwitchBacklight(short state)
- {
- CntrlParam pb;
- OSErr err;
- short brightness;
-
- if(!gHasBacklight)
- return paramErr;
-
- // Make sure we're not already in the right state
- if((err = GetBacklightBrightness(&brightness)) != noErr || state == (brightness ? 1 : 0))
- return err;
-
- // Set up the correct driver num
- pb.ioCRefNum = gDriverRef;
-
- // Turn it on
- if(state == 1)
- {
- pb.csCode = 0x4301;
- pb.csParam[0] = gOriginalBrightness;
- err = PBControlSync((ParmBlkPtr)&pb);
- }
-
- if(err == noErr)
- {
- // Set the "in use" flag (1 if we're taking control, 0 if we're done)
- pb.csCode = 0x4303;
- pb.csParam[0] = state ? 0 : 1;
- err = PBControlSync((ParmBlkPtr)&pb);
-
- // Turn it off
- if(state == 0 && err == noErr)
- {
- gOriginalBrightness = brightness;
- pb.csCode = 0x4301;
- pb.csParam[0] = 0;
- err = PBControlSync((ParmBlkPtr)&pb);
- }
- }
-
- return err;
- }
-
- /* -------------------------------------------------------------------------------- */
- OSErr SetBacklightBrightness(short value)
- {
- CntrlParam pb;
- OSErr err;
- short brightness;
-
- if(!gHasBacklight)
- return paramErr;
-
- // Set up the correct driver num
- pb.ioCRefNum = gDriverRef;
- pb.csCode = 0x4301;
- pb.csParam[0] = value;
- err = PBControlSync((ParmBlkPtr)&pb);
-
- return err;
- }
-